package com.yanyeori.springaop;

import com.yanyeori.springaop.service.UserService;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author chenkuan
 * @desc
 * @date 2021/3/10 010 19:09
 */
public class AopTest2 {

    ApplicationContext ioc;

    @Before
    public void before() {
        ioc = new ClassPathXmlApplicationContext("classpath:spring-aop.xml");
    }

    @Test
    public void test01() {
        UserService bean = ioc.getBean(UserService.class);
        System.out.println(bean.getClass());
        //没有使用aop时class为：com.yanyeori.springaop.service.impl.UserServiceImpl
        //当使用了aop的情况下：class com.sun.proxy.$Proxy25
        //class com.sun.proxy.$Proxy25  jdk代理所产生的一个动态代理类，当代理的类实现了接口会默认使用jdk代理器
        //使用了aop代理后，ioc中只有UserServiceImpl代理类，已不能通过UserServiceImpl获取bean，只能使用接口UserService获取bean

        bean.select(1);
    }
}
